﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Biciq.Datos;
using System.Linq;
namespace Biciq.Silverlight.UI
{
    public class RechazoClienteVistaModelo:VistaModeloBase
    {
        #region Constructores
        /// <summary>
        /// Metodo que muestra la vista de Rechazos de Clientes.
        /// </summary>
        /// <param name="cliente"></param>
        public RechazoClienteVistaModelo(Cliente cliente)
        {
            InicializarMensajesError();
            _clienteSeleccionado = cliente;
            Rechazo = new Rechazo();
            Rechazo.IdCliente = _clienteSeleccionado.Id;

        }
        #endregion

        #region Campos
        private Cliente _clienteSeleccionado;
        private Rechazo _rechazo;

        #endregion

        #region Propiedades
        public Cliente ClienteSeleccionado
        {
            get { return _clienteSeleccionado; }
            set 
            {
                _clienteSeleccionado = value;
                RaisePropertyChanged("ClienteSeleccionado");
            }
        }

        public Rechazo Rechazo
        {
            get { return _rechazo; }
            set
            {
                _rechazo = value;
                RaisePropertyChanged("Rechazo");
            }
        }

        public override void Guardar()
        {
            InicializarMensajesError();
            ValidarEntidadConMetadata(Rechazo);
            if (ListaErrores.Count > 0)
            {
                MostrarErrores = Visibility.Visible;
                return;
            }

            IsDirty = true;
            Rechazo.Id = Guid.NewGuid();

              BiciqContexto.Tarjetas.Clear();
              if (this.ClienteSeleccionado.TarjetaId != null)
              {
                  BiciqContexto.Load(BiciqContexto.GetTarjetaPorIdQuery(this.ClienteSeleccionado.TarjetaId.Value)).Completed += delegate
                  {
                      Tarjeta tarjeta = BiciqContexto.Tarjetas.FirstOrDefault();
                      if (tarjeta != null)
                      {
                          tarjeta.Estado = "ELIMINADO";
                      }

                      BiciqContexto.SubmitChanges().Completed += delegate
                      {
                          LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("El Rechazo del cliente se ha realizado exitosamente", "Rechazo Exitoso", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                          CerrarVentana();
                      };

                  };
              }
              else
              {
                  BiciqContexto.SubmitChanges().Completed += delegate
                  {
                      LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("El Rechazo del cliente se ha realizado exitosamente", "Rechazo Exitoso", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                      CerrarVentana();
                  };
              }



            

        }

        public override void Cancelar()
        {
            Cancelar(BiciqContexto);
        }
        #endregion
    }
}
